package fabricas;

import interfaces.IDibujable;
import interfaces.IFantasma;
import interfaces.ILaberinto;
import interfaces.IPacman;
import laberinto.Bolita;
import laberinto.Bolon;
import laberinto.Fruta;
import utilidades.Constantes;
import vista.GraficoDelFondo;
import vista.GraficosDeLaBolita;
import vista.GraficosDeLaFruta;
import vista.GraficosDelBolon;
import vista.GraficosDelFantasma;
import vista.GraficosDelNivel;
import vista.GraficosDelPacman;

public class FabricaDeGraficos {

	public static IDibujable crearGraficoDelFondo() {
		return new GraficoDelFondo(Constantes.PATH_IMAGEN_DE_FONDO,Constantes.ANCHO_PANTALLA+Constantes.OFFSET_CASILLAS_X ,Constantes.ALTO_PANTALLA+Constantes.OFFSET_CASILLAS_Y*2);
	}
	
	public static GraficosDelPacman crearGraficosDelPacman(IPacman pMan,ILaberinto nivel){
		String imgs[] = { obtenerPath("pack","up1"),obtenerPath("pack","up2"),obtenerPath("pack","up3"),obtenerPath("pack","up2"),
						  obtenerPath("pack","down1"),obtenerPath("pack","down2"),obtenerPath("pack","down3"),obtenerPath("pack","down2"),
						  obtenerPath("pack","left1"),obtenerPath("pack","left2"),obtenerPath("pack","left3"),obtenerPath("pack","left2"),
						  obtenerPath("pack","right1"),obtenerPath("pack","right2"),obtenerPath("pack","right3"),obtenerPath("pack","right2"),
						  obtenerPath("pack","dead1"),obtenerPath("pack","dead2"),obtenerPath("pack","dead3"),obtenerPath("pack","dead4")};
		return new GraficosDelPacman(imgs,pMan,nivel,Constantes.MODO_DEBUG);
	}
	
	public static IDibujable crearGraficosDelBolon(Bolon bolon,
			ILaberinto nivel) {
		String img = Constantes.PATH_IMAGEN_BOLON;
		return new GraficosDelBolon(img,bolon,nivel,Constantes.MODO_DEBUG);
	}

	public static IDibujable crearGraficosDeLaBolita(ILaberinto nivel, Bolita bolita) {
		String img = Constantes.PATH_IMAGEN_BOLITA;
		return new GraficosDeLaBolita(img,bolita,nivel,Constantes.MODO_DEBUG);
	}
	
	public static GraficosDelFantasma crearGraficosDelFantasma(String color,IFantasma fantasma,ILaberinto nivel){
		String imgs[] = {obtenerPath(color,"up"),obtenerPath(color,"down"),obtenerPath(color,"left"),obtenerPath(color,"right"),obtenerPath(color,"dead")};
		String imgsPresa[] = {obtenerPathPresa(color,"up"),obtenerPathPresa(color,"down"),obtenerPathPresa(color,"left"),obtenerPathPresa(color,"right"),obtenerPathPresa(color,"dead")};
		return new GraficosDelFantasma(imgs,imgsPresa,fantasma,nivel,Constantes.MODO_DEBUG);
	}
	
	public static GraficosDelNivel crearGraficosDelNivel(ILaberinto nivel) {
		return new GraficosDelNivel(nivel,Constantes.MODO_DEBUG);
	}	
	

	private static String obtenerPath(String color,String state){
		return new String(imagenPath(color,state));
	}	
	
	private static String obtenerPathPresa(String color,String state){
		return new String(imagenPresa(state));
	}	
	
	public static final String imagenPresa(String estado){
		return Constantes.ROOT_IMAGENES+"/prey/prey_"+estado+".png";
	}

	public static final String imagenPath(String color,String estado){
		return Constantes.ROOT_IMAGENES+"/"+color+"/"+color+"_"+estado+".png";
	}
	
	public static IDibujable crearGraficosDeLaFruta(Fruta fruta,ILaberinto nivel) {
		String img = Constantes.PATH_IMAGEN_FRUTA;
		return new GraficosDeLaFruta(img,fruta,nivel,Constantes.MODO_DEBUG);
	}		
}